/*
* Name: globals.h
* Created by 勇 on 2022/11/16.
* Description: 全局变量
*
*/

#ifndef ARDUINO_ESP8266_GLOBALS_H
#define ARDUINO_ESP8266_GLOBALS_H

#include <Arduino.h>
#include <EEPROM.h>
#include "ConfigType.h"
#include "OneButton/OneButton.h"
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
#include <Ticker.h>
#include <ESP8266httpUpdate.h>
#include <DNSServer.h>


/**
 * 固件版本
 */
#define FIRMWARE_VERSION "1.00"

/**
 * 常量
 * 开关数量  三开
 */
#define SWITCH_NUMBER 3

/**
 * 触摸长按 时间(毫秒)
 */
#define LONG_CLICK_EVENT_TIME_OUT  5000

/**
 * 联网成功 板载LED闪烁间隔
 */
#define LDE_FLASHING_TIME 500

/**
 * 板载LED 无wifi情况下闪烁
 */
#define LED_FLASHING_NOT_WIFI_TIME 5000

/**
 * 上报数据间隔
 */
#define SEND_DATA_TO_SERVER_TIME 60000

/**
 * 连接wifi超时
 */
#define CONNECT_WIFI_TIME_OUT 10

/** ===== 工作模式 ====== */
/**
 * 工作模式: 无工作
 */
#define WORK_MODE_NULL 0

/**
 * 触摸按键1 开关
 */
#define WORK_MODE_SWITCH_ONE 1001

/**
 * 触摸按键2 开关
 */
#define WORK_MODE_SWITCH_TOW 1002

/**
 * 触摸按键3 开关
 */
#define WORK_MODE_SWITCH_THREE 1003




/**
 * 触摸按键1 长按 (设置wifi&配置)
 */
#define WORK_MODE_SET_WIFI_CONFIG 2001

/**
 * 配网等待
 */
#define WORK_MODE_SET_WIFI_CONFIG_WAIT 2002

/**
 * 触摸按键2 长按(web配网)
 */
#define WORK_MODE_SET_WIFI_WEB_CONFIG 2003

/**
 * web配网等待
 */
#define WORK_MODE_SET_WIFI_WEB_CONFIG_WAIT 2004



/**
 * 长按开关3 重启
 */
#define WORK_MODE_RESTART 9999



/**
 * 发送数据到服务器
 */
#define SEND_DATA_TO_SERVER 3001

/**
 * 更新固件
 */
#define WORK_MODE_UPDATE 4001




/** 服务器指令 */
/**
 * 更新固件
 */
#define UPDATE_FIRMWARE 10000

/**
 * 工作模式
 */
#define MODE_OPERATION 10001

/**
 * 修改开关名称
 */
#define MODE_UPDATE_SWITCH_NAME 10002

/**
 * 修改mqtt密码
 */
#define MODE_UPDATE_MQTT_PASSWORD 10003

/**
 * 反馈设备状态
 */
#define MODE_FEEDBACK_STATE 10004


/**
 * 获取当前工作模式
 * @return 工作模式
 */
int getWorkMode();

/**
 * 设置当前工作模式
 * @param model 工作模式
 */
void setWorkMode(int mode);


#endif //ARDUINO_ESP8266_GLOBALS_H

/**
*  mqtt可开一个配置各种数据的主题来达到配网成功后接收各种数据
*/